iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 4
1

來客製化樣式(Style),可以改文字顏色、字體、字體大小

先拿預設的樣式
有 Normal、Heading1、Title、Heading2、Heading3 ...等
可以從原始碼看到。

可以看一下原始碼預設的樣式
Normal:
fontSize=10
leading=12

Heading1(H1):
fontSize=18
leading=22
spaceAfter=6
...

這裡就用Normal 來改

有很多屬性可以改,挑幾個來說,詳細可以看官方說明文件
parent: 這個是指以哪一個預設樣式,繼承他的屬性

alignment: 對齊方式 TA_LEFT, TA_CENTER, TA_RIGHT, TA_JUSTIFY
backColor: 背景顏色
borderColor: 邊框顏色
borderRadius: 圓角
borderWidth: 邊框寬度
fontName: 字體
fontSize: 字體大小
textColor: 文字顏色 Color(0,0,0,1)

客製化樣式設定: 置中對齊,字體20,藍色

from reportlab.lib import colors
from reportlab.lib.enums import TA_CENTER
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.platypus import SimpleDocTemplate, Paragraph

# 拿預設樣式
styles = getSampleStyleSheet()

styleNormalCustom = ParagraphStyle(
    'styleNormalCustom',
    fontName='kaiu',
    parent=styles["Normal"],
    fontSize=20,
    alignment=TA_CENTER,
    textColor=colors.blue,
)

pdfmetrics.registerFont(TTFont('kaiu', "font/kaiu.ttf"))

fileName = "example.pdf"
pdfTemplate = SimpleDocTemplate(fileName)
story = []
story.append(Paragraph("Hello World"))
story.append(Paragraph("你好世界", styleNormalCustom))
pdfTemplate.build(story)

輸出結果

之後可以先把會用到的字體樣式先定義好,之後就可以直接使用了,如果要顯示中文的話,就一定要寫樣式(ParagraphStyle)了。


參考資料:

如果有任何寫得不好的地方,請跟我說,謝謝。


上一篇
[Day 03] Hello World
下一篇
[Day 05] 表格(Table)
系列文
用 Python 玩 PDF,結合Django 變成一個網頁系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言